/**********************************************************************************************************************
 *  FILE DESCRIPTION
 *  -------------------------------------------------------------------------------------------------------------------
 *          File:  CanIf.c
 *        Config:  GL_Demo.dpa
 *    BSW Module:  CanIf
 *
 *     Generator:  MICROSAR RTE Generator Version 4.19.0
 *                 RTE Core Version 1.19.0
 *       License:  CBD1800257
 *
 *   Description:  C-Code implementation template for BSW Module <CanIf>
 *********************************************************************************************************************/


/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << Start of version logging area >>                DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/

/* PRQA S 0777, 0779 EOF */ /* MD_MSR_5.1_777, MD_MSR_5.1_779 */
/* PRQA S 0857 EOF */ /* MD_MSR_1.1_857 */
/* PRQA S 0614 EOF */ /* MD_Rte_TestCode */

/* PRQA S 3109 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3112 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3197 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3198 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3199 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3201 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3203 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3205 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3206 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3218 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3229 EOF */ /* MD_Rte_TestCode */
/* PRQA S 2002 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3334 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3417 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3426 EOF */ /* MD_Rte_TestCode */
/* PRQA S 3453 EOF */ /* MD_Rte_TestCode */

/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << End of version logging area >>                  DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/

#include "SchM_CanIf.h"
#include "TSC_SchM_CanIf.h"


/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << Start of include and declaration area >>        DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/

#include "string.h"


/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << End of include and declaration area >>          DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/


/**********************************************************************************************************************
 *
 * Used AUTOSAR Data Types
 *
 **********************************************************************************************************************
 *
 * Primitive Types:
 * ================
 * ComM_InhibitionStatusType: Integer in interval [0...255]
 * ComM_UserHandleType: Integer in interval [0...255]
 * CounterType: Integer in interval [0...255]
 * Dem_DTCGroupType: Integer in interval [0...16777215]
 * Dem_DTCStatusMaskType: Integer in interval [0...255]
 * Dem_EventIdType: Integer in interval [1...65535]
 * Dem_OperationCycleIdType: Integer in interval [0...255]
 * Dem_RatioIdType: Integer in interval [1...65535]
 * EcuM_TimeType: Integer in interval [0...4294967295]
 * EcuM_UserType: Integer in interval [0...255]
 * NetworkHandleType: Integer in interval [0...255]
 * TimeInMicrosecondsType: Integer in interval [0...4294967295]
 * boolean: Boolean (standard type)
 * sint8: Integer in interval [-128...127] (standard type)
 * uint16: Integer in interval [0...65535] (standard type)
 * uint32: Integer in interval [0...4294967295] (standard type)
 * uint8: Integer in interval [0...255] (standard type)
 *
 * Enumeration Types:
 * ==================
 * BswM_ESH_Mode: Enumeration of integer in interval [0...255] with enumerators
 * BswM_ESH_RunRequest: Enumeration of integer in interval [0...255] with enumerators
 * ComM_ModeType: Enumeration of integer in interval [0...3] with enumerators
 * Dcm_CommunicationModeType: Enumeration of integer in interval [0...255] with enumerators
 * Dcm_ConfirmationStatusType: Enumeration of integer in interval [0...3] with enumerators
 * Dcm_ControlDtcSettingType: Enumeration of integer in interval [0...255] with enumerators
 * Dcm_DiagnosticSessionControlType: Enumeration of integer in interval [0...255] with enumerators
 * Dcm_EcuResetType: Enumeration of integer in interval [0...255] with enumerators
 * Dcm_NegativeResponseCodeType: Enumeration of integer in interval [0...254] with enumerators
 * Dcm_OpStatusType: Enumeration of integer in interval [0...64] with enumerators
 * Dcm_ProtocolType: Enumeration of integer in interval [0...254] with enumerators
 * Dcm_RequestKindType: Enumeration of integer in interval [0...2] with enumerators
 * Dcm_SecLevelType: Enumeration of integer in interval [0...1] with enumerators
 * Dcm_SesCtrlType: Enumeration of integer in interval [0...3] with enumerators
 * Dem_DTCFormatType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_DTCKindType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_DTCOriginType: Enumeration of integer in interval [0...65535] with enumerators
 * Dem_DTCSeverityType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_DTRControlType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_DebounceResetStatusType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_DebouncingStateType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_EventStatusType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_IndicatorStatusType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_InitMonitorReasonType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_IumprDenomCondIdType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_IumprDenomCondStatusType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_IumprReadinessGroupType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_MonitorStatusType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_OperationCycleStateType: Enumeration of integer in interval [0...255] with enumerators
 * Dem_UdsStatusByteType: Enumeration of integer in interval [0...255] with enumerators
 * EcuM_BootTargetType: Enumeration of integer in interval [0...2] with enumerators
 * EcuM_ModeType: Enumeration of integer in interval [0...3] with enumerators
 * EcuM_ShutdownCauseType: Enumeration of integer in interval [0...3] with enumerators
 * EcuM_StateType: Enumeration of integer in interval [0...144] with enumerators
 * Rte_DT_SG_Sig_Grp_0x210_0: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x210_1: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x210_2: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x210_3: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x211_0: Enumeration of integer in interval [0...7] with enumerators
 * Rte_DT_SG_Sig_Grp_0x211_1: Enumeration of integer in interval [0...7] with enumerators
 * Rte_DT_SG_Sig_Grp_0x211_2: Enumeration of integer in interval [0...7] with enumerators
 * Rte_DT_SG_Sig_Grp_0x211_3: Enumeration of integer in interval [0...7] with enumerators
 * Rte_DT_SG_Sig_Grp_0x212_0: Enumeration of integer in interval [0...7] with enumerators
 * Rte_DT_SG_Sig_Grp_0x216_0: Enumeration of integer in interval [0...255] with enumerators
 * Rte_DT_SG_Sig_Grp_0x216_1: Enumeration of integer in interval [0...255] with enumerators
 * Rte_DT_SG_Sig_Grp_0x300_0: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x300_1: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x300_2: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x300_3: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x301_0: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x301_1: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x301_2: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x301_3: Enumeration of integer in interval [0...3] with enumerators
 * Rte_DT_SG_Sig_Grp_0x304_0: Enumeration of integer in interval [0...15] with enumerators
 * Rte_DT_SG_Sig_Grp_0x304_1: Enumeration of integer in interval [0...15] with enumerators
 * Rte_DT_SG_Sig_Grp_0x304_2: Enumeration of integer in interval [0...15] with enumerators
 * Rte_DT_SG_Sig_Grp_0x304_3: Enumeration of integer in interval [0...15] with enumerators
 *
 * Array Types:
 * ============
 * DataArrayType_uint8_1: Array with 1 element(s) of type uint8
 * Dcm_Data13ByteType: Array with 13 element(s) of type uint8
 * Dcm_Data17ByteType: Array with 17 element(s) of type uint8
 * Dcm_Data1ByteType: Array with 1 element(s) of type uint8
 * Dcm_Data4ByteType: Array with 4 element(s) of type uint8
 * Dcm_Data5ByteType: Array with 5 element(s) of type uint8
 * Dcm_Data8ByteType: Array with 8 element(s) of type uint8
 * Dem_MaxDataValueType: Array with 9 element(s) of type uint8
 *
 * Record Types:
 * =============
 * SG_Sig_Grp_0x210: Record with elements
 *   F_Led1_State of type Rte_DT_SG_Sig_Grp_0x210_0
 *   F_Led2_State of type Rte_DT_SG_Sig_Grp_0x210_1
 *   F_Led3_State of type Rte_DT_SG_Sig_Grp_0x210_2
 *   F_Led4_State of type Rte_DT_SG_Sig_Grp_0x210_3
 * SG_Sig_Grp_0x211: Record with elements
 *   F_Button1_State of type Rte_DT_SG_Sig_Grp_0x211_0
 *   F_Button2_State of type Rte_DT_SG_Sig_Grp_0x211_1
 *   F_Button3_State of type Rte_DT_SG_Sig_Grp_0x211_2
 *   F_Button4_State of type Rte_DT_SG_Sig_Grp_0x211_3
 * SG_Sig_Grp_0x212: Record with elements
 *   F_PowerMode of type Rte_DT_SG_Sig_Grp_0x212_0
 *   SupF_Checksum_0x212 of type uint8
 *   SupF_Counter_0x212 of type uint8
 * SG_Sig_Grp_0x213: Record with elements
 *   F_AAA_Angle of type uint8
 * SG_Sig_Grp_0x214: Record with elements
 *   F_Sig_0x214_Used_1 of type uint16
 *   F_Sig_0x214_Used_2 of type uint16
 *   F_Sig_0x214_Used_3 of type uint16
 *   F_Sig_0x214_Used_5 of type uint16
 * SG_Sig_Grp_0x216: Record with elements
 *   F_Meg_E2E_Error of type Rte_DT_SG_Sig_Grp_0x216_0
 *   F_Mes_Lost_Error of type Rte_DT_SG_Sig_Grp_0x216_1
 * SG_Sig_Grp_0x300: Record with elements
 *   D_Led1_Control of type Rte_DT_SG_Sig_Grp_0x300_0
 *   D_Led2_Control of type Rte_DT_SG_Sig_Grp_0x300_1
 *   D_Led3_Control of type Rte_DT_SG_Sig_Grp_0x300_2
 *   D_Led4_Control of type Rte_DT_SG_Sig_Grp_0x300_3
 *   E2E_Reserve1_0x300 of type uint32
 *   E2E_Reserve2_0x300 of type uint32
 *   SupD_Checksum_0x300 of type uint8
 *   SupD_Counter_0x300 of type uint8
 * SG_Sig_Grp_0x301: Record with elements
 *   D_Button1_Control of type Rte_DT_SG_Sig_Grp_0x301_0
 *   D_Button2_Control of type Rte_DT_SG_Sig_Grp_0x301_1
 *   D_Button3_Control of type Rte_DT_SG_Sig_Grp_0x301_2
 *   D_Button4_Control of type Rte_DT_SG_Sig_Grp_0x301_3
 * SG_Sig_Grp_0x302: Record with elements
 *   E_Sig_0x302_Used_1 of type uint16
 *   E_Sig_0x302_Used_2 of type uint8
 *   E_Sig_0x302_Used_3 of type uint8
 * SG_Sig_Grp_0x304: Record with elements
 *   D_Led1_CtrlMode of type Rte_DT_SG_Sig_Grp_0x304_0
 *   D_Led2_CtrlMode of type Rte_DT_SG_Sig_Grp_0x304_1
 *   D_Led3_CtrlMode of type Rte_DT_SG_Sig_Grp_0x304_2
 *   D_Led4_CtrlMode of type Rte_DT_SG_Sig_Grp_0x304_3
 *   SupD_Checksum_0x304 of type uint8
 *   SupD_Counter_0x304 of type uint8
 *
 *********************************************************************************************************************/


/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << Start of function definition area >>            DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/


/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << End of function definition area >>              DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/


/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << Start of removed code area >>                   DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/


/**********************************************************************************************************************
 * DO NOT CHANGE THIS COMMENT!           << End of removed code area >>                     DO NOT CHANGE THIS COMMENT!
 *********************************************************************************************************************/

/**********************************************************************************************************************
 MISRA 2004 violations and justifications
 *********************************************************************************************************************/

/* module specific MISRA deviations:
   MD_Rte_TestCode:
     Reason:     This justification is used within the generated test code by the Rte Analyzer.
     Risk:       No functional risk.
     Prevention: Not required.

*/
